// 商品参数模型
const { goodsDyAttr, goodsStaticAttr } = require('../../../models/category');
// 统一数据返回类
const { DataReturn } = require('../../../common/returnclass');

/**
 * @api {Put} /categories/modify_val/:type/:id/:old_val/:new_val 修改分类参数值
 * @apiGroup Admin-Categories
 *
 * @apiParam {ObjectId} id 分类参数id
 * @apiParam {Number} type 1代表动态参数 2代表静态参数
 * @apiParam {String} old_val 旧参数名称
 * @apiParam {String} new_val 新参数名称
 *
 * @apiSuccess {Number} code 状态码
 * @apiSuccess {Object} data 返回数据
 * @apiSuccess {String} msg  返回消息
 */
module.exports = async (req, res) => {
	// category 1代表动态参数 2代表静态参数 商品分类id 参数名称
	let { type, id, old_val, new_val } = req.params;
	console.log(req.params);
	let result;
	if (type == 1) {
		// 查询参数
		result = await goodsDyAttr.findOne({ _id: id });
		// 参数已存在
		if (!result) return DataReturn.getData(res,400,[],'该参数名称不存在');
		// 更新数据
		goodsDyAttr.updateOne({_id:id}, { $pull: { attr_vals: { $in: [old_val] } } }, { multi: false })
		.then(async ()=>{ 
			return await goodsDyAttr.updateOne({ _id: id } , { $push: { attr_vals: new_val } } , { multi: true })		
		}).then(()=>{
			// 响应 
			DataReturn.getData(res,200,[],'更新成功')
		})
		.catch((err)=>{
			// 响应
			DataReturn.getData(res,400,[],'更新失败')
		})
		
	} else {
		// 查询参数
		result = await goodsStaticAttr.findOne({ _id: id });
		// 参数已存在
		if (!result) return DataReturn.getData(res,400,[],'该参数名称不存在');
		// 更新数据
		goodsStaticAttr.updateOne({_id:id}, { $pull: { attr_vals: { $in: [old_val] } } }, { multi: false })
		.then(async ()=>{
			return await goodsStaticAttr.updateOne({ _id: id } , { $push: { attr_vals: new_val } } , { multi: true })		
		}).then(()=>{
			// 响应
			DataReturn.getData(res,200,[],'更新成功')
		}).catch((err)=>{
			// 响应
			DataReturn.getData(res,400,[],'更新失败')
		})
		
	}
}